From: Vitaly Kuznetsov Date: Tue, 2 Dec 2014 15:18:08 +0000 (+0100) Subject: libxc: check in xc_get_tot_pages() that the proper domain is reported X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~4031 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=5dcd0dcb85941bd92336e01ae3f8c44730099c96;p=xen.git libxc: check in xc_get_tot_pages() that the proper domain is reported XEN_DOMCTL_getdomaininfo, which is being used by xc_domain_getinfo(), has strange interface: it reports first domain which has domid >= requested domid so all callers are supposed to check that the proper domain(s) was queried by checking domid. xc_get_tot_pages() doesn't do that. In case the requested domain was destroyed it will report first domain with domid > requested domid which is apparently misleading as there is no way xc_get_tot_pages() callers can figure out that they got tot_pages for some other domain. Signed-off-by: Vitaly Kuznetsov Reviewed-by: Don Slutz Reviewed-by: Andrew Cooper Acked-by: Wei Liu --- diff --git a/tools/libxc/xc_private.c b/tools/libxc/xc_private.c index 1c214ddc8f..e2441ad7ec 100644 --- a/tools/libxc/xc_private.c +++ b/tools/libxc/xc_private.c @@ -613,8 +613,10 @@ int xc_get_pfn_list(xc_interface *xch, long xc_get_tot_pages(xc_interface *xch, uint32_t domid) { xc_dominfo_t info; - return (xc_domain_getinfo(xch, domid, 1, &info) != 1) ? - -1 : info.nr_pages; + if ( (xc_domain_getinfo(xch, domid, 1, &info) != 1) || + (info.domid != domid) ) + return -1; + return info.nr_pages; } int xc_copy_to_domain_page(xc_interface *xch,